﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace KokosSearcher
{
	public partial class Form1 : Form
	{
		bool _gridColumsSet;

		public Form1()
		{
			InitializeComponent();
			
			this._gridColumsSet = false;
		}

		//private void button1_Click(object sender, EventArgs e)
		//{
		//    new KokosData().getAuctionData("60309");
		//}

		//private void button1_Click_1(object sender, EventArgs e)
		//{
		//    MessageBox.Show("TODO");
		//}

		private void btnSynchronizuj_Click(object sender, EventArgs e)
		{
			/* TODO:
			 * pobranie listy aukcji, które znajdują się obecnie w bazie i dla każdej należy zsynchronizować plan spłaty i ew. informacje dodatkowe
			 */
		}

		private void btnDodaj_Click(object sender, EventArgs e)
		{
			/* TODO
			 * Wyświetlić formatkę do wprowadzenia numeru aukcji i wyszukanie jej w systemie
			 * Po znalezieniu dodać ją do bazy
			 */
			new AuctionSearchForm().ShowDialog(this);
		}

		private void btnSzukaj_click(object sender, EventArgs e)
		{
			// odczytanie listy znalezionych aukcji
			List<KokosAuction> listaAukcji = new KokosData().searchWithFilters(this.grpBoxFiltrow);
			
			if (listaAukcji != null)
			{
				// ustawiamy odpowiednie kolumny do prezentacji - chyba że została już dodana wcześniej
				if(!this._gridColumsSet){
					this.formatujKolumnyGrida(this.grdListaAukcji);
				}

				//todo: podpięcie znalezionych aukcji do grida w oknie głównym
				this.grdListaAukcji.DataSource = listaAukcji;
			}
			else
			{
				//todo: nie znaleziono żadnych aukcji
			}
		}

		private void formatujKolumnyGrida(DataGridView p_dataGridView)
		{
			this._gridColumsSet = true;

			// czas do końca, kwota pożyczki, procent, wpłacono, tytuł, opis, użytkownik, link do aukcji
			p_dataGridView.AutoGenerateColumns = false;
			p_dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;

			//DataGridViewTextBoxColumn okresColumn = new DataGridViewTextBoxColumn();
			//okresColumn.DataPropertyName = "Period";
			//okresColumn.HeaderText = "Okres";

			DataGridViewLinkColumn idColumn = new DataGridViewLinkColumn();
			idColumn.DataPropertyName = "AuctionLink";
			idColumn.HeaderText = "Link";
			idColumn.LinkBehavior = LinkBehavior.SystemDefault;
			
			DataGridViewTextBoxColumn okresColumn = new DataGridViewTextBoxColumn();
			okresColumn.DataPropertyName = "Period";
			okresColumn.HeaderText = "Okres";

			DataGridViewTextBoxColumn timeToEndColumn = new DataGridViewTextBoxColumn();
			timeToEndColumn.DataPropertyName = "TimeToEnd";
			timeToEndColumn.HeaderText = "Czas do końca";

			DataGridViewTextBoxColumn valueColumn = new DataGridViewTextBoxColumn();
			valueColumn.DataPropertyName = "Value";
			valueColumn.HeaderText = "Kwota pożyczki";

			DataGridViewTextBoxColumn procentColumn = new DataGridViewTextBoxColumn();
			procentColumn.DataPropertyName = "Percent";
			procentColumn.HeaderText = "Procent";

			DataGridViewTextBoxColumn paidColumn = new DataGridViewTextBoxColumn();
			paidColumn.DataPropertyName = "Paid";
			paidColumn.HeaderText = "Wpłacono";

			DataGridViewTextBoxColumn titleColumn = new DataGridViewTextBoxColumn();
			titleColumn.DataPropertyName = "Title";
			titleColumn.HeaderText = "Tytuł";

			DataGridViewTextBoxColumn userColumn = new DataGridViewTextBoxColumn();
			userColumn.DataPropertyName = "UserName";
			userColumn.HeaderText = "Użytkownik";

			DataGridViewImageColumn ratingColumn = new DataGridViewImageColumn();
			ratingColumn.DataPropertyName = "Rating";
			ratingColumn.HeaderText = "Rating";

			p_dataGridView.Columns.Add(idColumn);
			p_dataGridView.Columns.Add(userColumn);
			p_dataGridView.Columns.Add(ratingColumn);
			p_dataGridView.Columns.Add(okresColumn);
			p_dataGridView.Columns.Add(timeToEndColumn);
			p_dataGridView.Columns.Add(valueColumn);
			p_dataGridView.Columns.Add(procentColumn);
			p_dataGridView.Columns.Add(paidColumn);
			p_dataGridView.Columns.Add(titleColumn);
		}

		private void openLinkInWebBrowser(object sender, DataGridViewCellEventArgs e)
		{
			// fixme: this could go to a proper controler as a function (with a proper logger)
			if (e.ColumnIndex == 0)
			{	
				ProcessStartInfo processAuctionLink = new ProcessStartInfo(this.grdListaAukcji.Rows[e.RowIndex].Cells[e.ColumnIndex].FormattedValue.ToString());
				Process.Start(processAuctionLink);
			}
		}
	}
}
